import subprocess
input ("Добро пожаловать в автоматический установщик! для продолжения нажмите любую кнопку...")
print ("Запущено обновление системы, пожалуйста, укажите пароль пользователя..")
subprocess.run(["sudo", "dnf", "update", "-y"])
print ("Установка RPM-Fussion..")
# Определяем команды для установки
commands = [
    "sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm -y",
    "sudo dnf install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm -y"
]

# Выполняем команды
for command in commands:
    process = subprocess.run(command, shell=True, check=True)

print ("Запуск установки программ")
# Список программ для установки
programs = [
    "git",
    "wget",
    "curl",
    "zsh",
    "neovim",
    "neofetch",
    "fastfetch",
    "ncdu",
    "htop",
    "flatpak",
    "remmina",
    "inxi",
    "tree",
    "tmux",
    "mosh",
    "make",
    "gcc",
    "less",
    "pass",
    "gpg",
    "libnotify",
    "blueman",
    "wireguard-tools",
    "lsd",
    "bat",
    "NetworkManager-l2tp",
    "NetworkManager-l2tp-gnome",
    "libreswan",
    "xl2tpd",
    "powerline-fonts",
    "npm",
    "python-lsp-server",
    "kitty",
    "alacritty",
    "fastfetch",
    "hyprland",
    "micro",
    "zip",
    "unzip",
    "setxkbmap.x86_64",
    "lm_sensors"
    "light R-fontawesome.noarch",
    "fontawesome-fonts",
    "swaybg",
    "hypridle", 
    "jetbrains-mono-fonts", 
    "pavucontrol",
    "nemo",
    "wofi",
    "waybar",
    "network-manager-applet",
    "grim",
    "setxkbmap",
    "azote",
"wl-clipboard",
"google-noto-sans-cjk-ttc-fonts"
]

# Функция для установки программ
def install_programs(program_list):
    for program in program_list:
        try:
            print(f"Установка {program}...")
            subprocess.run(["sudo", "dnf", "install", "-y", program], check=True)
            print(f"{program} успешно установлен.")
        except subprocess.CalledProcessError as e:
            print(f"Ошибка при установке {program}: {e}")

# Запуск установки
if __name__ == "__main__":
    install_programs(programs)
print ("Программы DNF установлены,приступаю к установке программ Flatpak")

# Список приложений для установки
applications = [
    "com.spotify.Client",
    "md.obsidian.Obsidian",
    "org.qbittorrent.qBittorrent",
    "com.github.tchx84.Flatseal",
    "com.anydesk.Anydesk",
    "org.videolan.VLC",
    "me.kozec.syncthingtk",
   ]

# Функция для установки Flatpak
def install_flatpak_apps(app_list):
    # Добавление репозитория Flathub
    try:
        subprocess.run(["flatpak", "--user", "remote-add", "--if-not-exists", "flathub", "https://flathub.org/repo/flathub.flatpakrepo"], check=True)
        print("Репозиторий Flathub добавлен.")
    except subprocess.CalledProcessError as e:
        print(f"Ошибка при добавлении репозитория Flathub: {e}")

    # Установка приложений
    for app in app_list:
        try:
            print(f"Установка {app}...")
            subprocess.run(["flatpak","--user", "install", "-y","flathub", app], check=True)
            print(f"{app} успешно установлен.")
        except subprocess.CalledProcessError as e:
            print(f"Ошибка при установке {app}: {e}")

# Запуск установки
if __name__ == "__main__":
    install_flatpak_apps(applications)

print ("Все требуемые приложения установлены,")
print ("Запуск установки pyright..")
#input ("Press enter")
subprocess.run(["sudo", "npm", "install", "-g", "pyright"], check=True)
#input ("Press enter")
print ("Запуск настройки OMZ, НАЖМИТЕ ENTER  И ВВЕДИТЕ ПАРОЛЬ ")

##### Блок кода настройки OMZ

# Command to install Oh My Zsh
command = 'sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"'

# Execute the command in a subprocess
try:
    result = subprocess.run(command, shell=True, check=True, text=True, capture_output=True)
    print("Installation Output:", result.stdout)
except subprocess.CalledProcessError as e:
    print("An error occurred:", e.stderr)

#### Конец блока кода настройки OMZ


